home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / ptime_10.zip / PHILTIME.ASM < prev    next >
Assembly Source File  |  1992-10-07  |  2KB  |  108 lines

  1.         ideal
  2.  
  3.         include    "PhilTime.I"
  4.  
  5.         extrn    displayFirst:byte,displayLast:byte
  6.         extrn    tickHandler:far,oldTickHandler:dword
  7.         extrn    hackMem:far
  8.  
  9. segment        hackTime
  10.         assume    cs:hackTime
  11.  
  12.         bannerString
  13.  
  14. newBlock    dw    ?
  15. PSP        dw    ?
  16.  
  17. proc        savePSP
  18.         assume    ds:nothing
  19.         mov    [PSP],ds
  20.         ret
  21. endp        savePSP
  22.  
  23. proc        printBanner
  24.         assume    ds:hackTime
  25.         push    cs
  26.         pop    ds
  27.         mov    ah,9
  28.         mov    dx,offset banner
  29.         int    21h
  30.         ret
  31. endp        printBanner
  32.  
  33. proc        saveOldTickHandler
  34.         assume    ds:seg(oldTickHandler)
  35.         mov    ax,seg(oldTickHandler)
  36.         mov    ds,ax
  37.         mov    ax,351ch
  38.         int    21h
  39.         mov    [word ptr oldTickHandler],bx
  40.         mov    bx,es
  41.         mov    [word ptr oldTickHandler+2],bx
  42.         ret
  43. endp        saveOldTickHandler
  44.  
  45. proc        requestMemory
  46.                 ;I don't know if request is quite the right word for it!
  47.         assume    ds:nothing
  48.         mov    dx,offset displayLast
  49.         sub    dx,offset displayFirst
  50.         add    dx,15
  51.         mov    cl,4
  52.         shr    dx,cl
  53.         call    hackMem
  54.         mov    [newBlock],dx
  55.         ret
  56. endp        requestMemory
  57.  
  58. proc        releaseMemory
  59.         assume    ds:nothing
  60.         mov    ds,[PSP]
  61.         mov    ax,[ds:2ch]
  62.         mov    es,ax
  63.         mov    ah,49h
  64.         int    21h
  65.         ret
  66. endp        releaseMemory
  67.  
  68. proc        copyTickHandler
  69.         assume    ds:seg(displayFirst)
  70.         mov    ax,seg(displayFirst)
  71.         mov    ds,ax
  72.         mov    es,[newBlock]
  73.         mov    cx,offset displayLast
  74.         sub    cx,offset displayFirst
  75.         mov    si,offset displayFirst
  76.         mov    di,0
  77.     rep    movsb
  78.         ret
  79. endp        copyTickHandler
  80.  
  81. proc        installTickHandler
  82.         assume    ds:nothing
  83.         mov    ds,[newBlock]
  84.         mov    dx,offset tickHandler
  85.         mov    ax,251ch
  86.         int    21h
  87.         ret
  88. endp        installTickHandler        
  89.  
  90. proc        terminateNormally
  91.         assume    ds:nothing
  92.         mov    ax,4c00h
  93.         int    21h
  94. endp        terminateNormally
  95.  
  96. start:        call    savePSP
  97.         call    printBanner
  98.         call    saveOldTickHandler
  99.         call    requestMemory
  100.         call    releaseMemory
  101.         call    copyTickHandler
  102.         call    installTickHandler
  103.         call    terminateNormally
  104.  
  105. ends        hackTime
  106.  
  107.         end    start
  108.